import { reqLogin, reqLogout } from '@/api/user'

// 每次刷新，先读取本地数据 || 初始化state
const initState = JSON.parse(localStorage.getItem('userInfo')) || {
  account: '', // 账号
  token: '' // 唯一标识token
}

export default {
  // 开启命名空间
  namespaced: true,
  state: initState,
  actions: {
    // 发送登录请求接收响应数据
    async login({ commit }, { account, password }) {
      // console.log('发送登录请求：', account, password)
      const result = await reqLogin(account, password)
      commit('LOGIN', result) // 保存数据
    },
    // 发送退出登录请求
    async logout({ commit }) {
      await reqLogout()
      commit('LOGOUT') // 删除数据
    }
  },
  mutations: {
    // 登录vuex保存响应数据
    LOGIN(state, result) {
      // console.log('进入commit保存：', result)
      state.account = result.account
      state.token = result.token
      // 本地存储保存数据
      localStorage.setItem(
        'userInfo',
        JSON.stringify({
          account: result.account,
          token: result.token
        })
      )
    },
    LOGOUT(state) {
      // 退出登录 删除vuex数据和本地数据
      state.account = ''
      state.token = ''
      localStorage.removeItem('userInfo')
    }
  }
}
